home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 2 / Amiga Tools 2.iso / tools / mg / src.lzh / amiga / dirio.c < prev    next >
C/C++ Source or Header  |  1990-05-23  |  2KB  |  81 lines

  1. /*
  2.  * Name:    MG 2x Directory I/O routines, by Stephen Walton Version of
  3.  * 5-May-88
  4.  */
  5.  
  6. #include "no_dir.h"
  7.  
  8. #ifndef NO_DIR
  9.  
  10. #include "def.h"
  11. #include "use_arp.h"
  12. #ifdef    USE_ARP
  13. #include <arpfunctions.h>
  14. #ifdef    LATTICE
  15. #include <libraries/arp_pragmas.h>
  16. #endif
  17. #endif
  18. #ifdef ANSI
  19. #include <string.h>
  20. #endif
  21.  
  22. #undef NULL
  23. #undef TRUE
  24. #undef FALSE
  25. #include <exec/types.h>
  26. #include <intuition/intuition.h>
  27. #include <libraries/dosextens.h>
  28. #include <exec/memory.h>
  29. #ifdef LATTICE
  30. #include <proto/all.h>
  31. #else
  32. #include <functions.h>
  33. #endif
  34.  
  35. extern char    *MyDirName;
  36.  
  37. char           *
  38. getwd(path)
  39.     char           *path;
  40. {
  41.     if (!path)
  42.         return path;
  43.     strcpy(path, MyDirName);
  44.     return path;
  45. }
  46.  
  47. chdir(path)
  48.     char           *path;
  49. {
  50.     BPTR            AttemptLock;
  51.     struct FileInfoBlock *fib;
  52.     int             retval;
  53.     extern char     version[], WindowTitle[];
  54.     extern struct Window *EmW;
  55.  
  56.     AttemptLock = Lock(path, ACCESS_READ);
  57.     if (!AttemptLock)
  58.         return -1;
  59.     fib = (struct FileInfoBlock *) AllocMem((long)
  60.                         sizeof(struct FileInfoBlock),
  61.                         MEMF_CLEAR);
  62.     Examine(AttemptLock, fib);
  63.     if (fib->fib_DirEntryType < 0) {
  64.         retval = -1;
  65.         UnLock(AttemptLock);
  66.         goto clean;
  67.     }
  68.     UnLock(CurrentDir(AttemptLock));    /* do the thing         */
  69.     if (PathName(AttemptLock, MyDirName, MAXPATH) == 0)
  70.         MyDirName[0] = '\0';
  71.     retval = 0;        /* Success!         */
  72.     SetWindowTitles(EmW, WindowTitle, version);
  73.  
  74. clean:
  75.     FreeMem((void *) fib, (long) sizeof(struct FileInfoBlock));
  76.     return retval;
  77. }
  78. #else
  79. #include "nullfile.h"
  80. #endif
  81.